// --------------------------------------------------------------------------------------------------------------------
// <copyright file="LogEntity.cs" company="">
//   
// </copyright>
// <summary>
//   The log entity.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace XRay.Library.Contracts
{
    #region

    using System;
    using System.Net;

    #endregion

    /// <summary>
    ///     The log entity.
    /// </summary>
    public class LogEntity
    {
        #region Public Properties

        /// <summary>
        ///     Gets or sets the authentication type.
        /// </summary>
        public string AuthenticationType { get; set; }

        /// <summary>
        ///     Gets or sets the client request id.
        /// </summary>
        public string ClientRequestId { get; set; }

        /// <summary>
        ///     Gets or sets the conditions used.
        /// </summary>
        public string ConditionsUsed { get; set; }

        /// <summary>
        ///     Gets or sets the endto end latency in ms.
        /// </summary>
        public int EndtoEndLatencyInMS { get; set; }

        /// <summary>
        ///     Gets or sets the etag identifier.
        /// </summary>
        public string EtagIdentifier { get; set; }

        /// <summary>
        ///     Gets or sets the http status code.
        /// </summary>
        public HttpStatusCode HttpStatusCode { get; set; }

        /// <summary>
        ///     Gets or sets the last modified time.
        /// </summary>
        public DateTimeOffset LastModifiedTime { get; set; }

        /// <summary>
        ///     Gets or sets the operation count.
        /// </summary>
        public int OperationCount { get; set; }

        /// <summary>
        ///     Gets or sets the operation type.
        /// </summary>
        public TransactionTypeEnum OperationType { get; set; }

        /// <summary>
        ///     Gets or sets the owner account name.
        /// </summary>
        public string OwnerAccountName { get; set; }

        /// <summary>
        ///     Gets or sets the referrer header.
        /// </summary>
        public string ReferrerHeader { get; set; }

        /// <summary>
        ///     Gets or sets the request content length.
        /// </summary>
        public long RequestContentLength { get; set; }

        /// <summary>
        ///     Gets or sets the request header size.
        /// </summary>
        public long RequestHeaderSize { get; set; }

        /// <summary>
        ///     Gets or sets the request m d 5.
        /// </summary>
        public string RequestMD5 { get; set; }

        /// <summary>
        ///     Gets or sets the request packet size.
        /// </summary>
        public long RequestPacketSize { get; set; }

        /// <summary>
        ///     Gets or sets the request start time.
        /// </summary>
        public DateTimeOffset RequestStartTime { get; set; }

        /// <summary>
        ///     Gets or sets the request status.
        /// </summary>
        public StatusMessagesEnum RequestStatus { get; set; }

        /// <summary>
        ///     Gets or sets the request url.
        /// </summary>
        public string RequestURL { get; set; }

        /// <summary>
        ///     Gets or sets the request version header.
        /// </summary>
        public string RequestVersionHeader { get; set; }

        /// <summary>
        ///     Gets or sets the requested object key.
        /// </summary>
        public string RequestedObjectKey { get; set; }

        /// <summary>
        ///     Gets or sets the requestid header.
        /// </summary>
        public Guid RequestidHeader { get; set; }

        /// <summary>
        ///     Gets or sets the requestor account name.
        /// </summary>
        public string RequestorAccountName { get; set; }

        /// <summary>
        ///     Gets or sets the requestor ip address.
        /// </summary>
        public string RequestorIPAddress { get; set; }

        /// <summary>
        ///     Gets or sets the response header size.
        /// </summary>
        public long ResponseHeaderSize { get; set; }

        /// <summary>
        ///     Gets or sets the response packet size.
        /// </summary>
        public long ResponsePacketSize { get; set; }

        /// <summary>
        ///     Gets or sets the server latency in ms.
        /// </summary>
        public int ServerLatencyInMS { get; set; }

        /// <summary>
        ///     Gets or sets the server m d 5.
        /// </summary>
        public string ServerMD5 { get; set; }

        /// <summary>
        ///     Gets or sets the service type.
        /// </summary>
        public AzureStorageServiceEnum ServiceType { get; set; }

        /// <summary>
        ///     Gets or sets the user agent header.
        /// </summary>
        public string UserAgentHeader { get; set; }

        /// <summary>
        ///     Gets or sets the version number.
        /// </summary>
        public string VersionNumber { get; set; }

        #endregion
    }
}